home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Format CD 32
/
Amiga Format AFCD32 (Nov 1998, Issue 117).iso
/
-seriously_amiga-
/
programming
/
other
/
hrtmon
/
src
/
65816.s
next >
Wrap
Text File
|
1998-08-10
|
23KB
|
1,858 lines
;HRTmon Amiga system monitor
;Copyright (C) 1991-1998 Alain Malek Alain.Malek@cryogen.com
;
;This program is free software; you can redistribute it and/or
;modify it under the terms of the GNU General Public License
;as published by the Free Software Foundation; either version 2
;of the License, or (at your option) any later version.
;
;This program is distributed in the hope that it will be useful,
;but WITHOUT ANY WARRANTY; without even the implied warranty of
;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;GNU General Public License for more details.
;
;You can find the full GNU GPL online at: http://www.gnu.org
**********************************************************
;-------------- assemble 65816 (AF) ----------------------
cmd_af bsr evaluate
bne.w illegal_addr
move.l d0,af_ptr
move.l d0,a4
bsr reloc_pic
.loop move.b (a0)+,d0
beq.b .end_line
cmp.b #$20,d0
beq.b .loop
subq.l #1,a0
bsr f_assemble
tst.l d0
beq.b .end_line ;error
add.l d0,af_ptr
move.l af_ptr,d0
moveq #8,d1
lea.l .nextAF_txt,a0
bsr print
bsr print_hex
lea.l .nextAF2_txt,a0
bsr print
.end_line
bra.w end_command
.nextAF_txt dc.b "af $",0
.nextAF2_txt dc.b " ",0
even
**********************************************************
;-------------- disassemble 65816 (DF) -------------------
cmd_df move.b (a0)+,d0
beq.b ok_df_cmd ;keep last address
cmp.b #$20,d0
beq.b cmd_df
subq.l #1,a0
bsr evaluate
bne.w illegal_addr
move.l d0,dis_ptr
ok_df_cmd move.l dis_ptr,d0 ;a4 = ptr on memory
move.l d0,a4
moveq #8-1,d7
next_disf_line move.l a4,d0
lea.l general_txt,a0 ;print address
move.b #'d',(a0)+
move.b #'f',(a0)+
move.b #'$',(a0)+
moveq #8,d1
bsr conv_hex
move.l a4,-(a7)
bsr reloc_pic
lea.l general_txt+11,a0
move.l #' ',d0
move.l d0,(a0)
move.l d0,4(a0)
move.l d0,8(a0)
move.l d0,12(a0)
lea.l general_txt+25,a0
bsr f_disassemble
move.l (a7)+,a4
move.w d0,d3 ;copy instr. len
lea.l general_txt+12,a0
moveq #2,d1
.loop move.b (a4)+,d0
bsr conv_hex
add.l d1,a0
move.b #' ',(a0)+
subq.w #1,d3
bne.b .loop
lea.l general_txt,a0
bsr print
tst.b break
dbne d7,next_disf_line
move.l a4,dis_ptr
bra.w end_command
************************************************************
;a0=ascII source of instr.
;a4=memory ptr (corrected)
;returns instr. len in d0 0=error
f_assemble movem.l d1-d7/a1-a4,-(a7)
move.b (a0)+,d0
bsr upper_case
lsl.l #8,d0
move.b (a0)+,d0
bsr upper_case
lsl.l #8,d0
move.b (a0)+,d0
bsr upper_case
lsl.l #8,d0
move.l d0,d2 ;d2=ASCII of instr.
moveq #18,d1 ;addressing mode (18=rien)
.seek move.b (a0)+,d0
beq.w .end_line
cmp.b #$20,d0
beq.b .seek
cmp.b #'#',d0
bne.b .no_immediat
bsr evaluate
bne.w .error
move.l d0,d4
moveq #0,d1
bra.w .end_line
.no_immediat cmp.b #'A',d0
bne.b .no_accu
moveq #15,d1
bra.w .end_line
.no_accu cmp.b #'<',d0
bne.b .no_direct
bsr evaluate
bne.w .error
move.l d0,d4
cmp.b #',',(a0)+
bne.b .no_virg
move.b (a0)+,d0
bsr upper_case
cmp.b #'X',d0
bne.b .no_x
moveq #2,d1
bra.w .end_line
.no_x cmp.b #'Y',d0
bne.b .no_y
moveq #22,d1
bra.w .end_line
.no_y cmp.b #'S',d0
bne.b .no_s
moveq #13,d1
bra.w .end_line
.no_s bra.w .error
.no_virg moveq #1,d1
bra.w .end_line
.no_direct cmp.b #'!',d0
bne.b .no_abs
bsr evaluate
bne.w .error
move.l d0,d4
cmp.b #',',(a0)+
bne.b .no_virg2
move.b (a0)+,d0
bsr upper_case
cmp.b #'X',d0
bne.b .no_x2
moveq #9,d1
bra.b .end_line
.no_x2 cmp.b #'Y',d0
bne.b .no_y2
moveq #10,d1
bra.b .end_line
.no_y2 bra.w .error
.no_virg2 moveq #8,d1
bra.b .end_line
.no_abs cmp.b #'>',d0
bne.b .no_absl
bsr evaluate
bne.w .error
move.l d0,d4
cmp.b #',',(a0)+
bne.b .no_virg3
move.b (a0)+,d0
bsr upper_case
cmp.b #'X',d0
bne.b .no_x3
moveq #12,d1
bra.b .end_line
.no_x3 bra.w .error
.no_virg3 moveq #11,d1
bra.b .end_line
.no_absl
subq.l #1,a0
moveq #17,d1
bsr evaluate
bne.w .error
move.l d0,d4
.end_line
lea.l fami_list-8,a3
.loop addq.l #8,a3
tst.b 1(a3)
bne.w .end_seek
cmp.l 2(a3),d2 ;cmp instr.
bne.b .loop
move.w 6(a3),d3
and.w #$ff,d3
cmp.w d3,d1 ;cmp addr. mode
bne.b .loop
move.b (a3),(a4) ;copy opcode
lea.l fami_len,a3
add.w d1,d1
moveq #0,d5
move.b (a3,d1.w),d5
cmp.b #6,d5
blt.b .normal
bne.b .no_m6
move.l a4,d0
addq.l #2,d0
move.l d4,d3
sub.l d0,d3
cmp.l #127,d3
bgt.w .too_long
cmp.l #-128,d3
blt.w .too_long
move.b d3,1(a4)
bra.b .do_instr
.no_m6 move.l a4,d0
addq.l #3,d0
move.l d4,d3
sub.l d0,d3
cmp.l #32767,d3
bgt.w .too_long
cmp.l #-32768,d3
blt.w .too_long
move.b d3,1(a4)
lsr.w #8,d3
move.b d3,2(a4)
bra.b .do_instr
.normal cmp.b #5,d5
bne.b .no_imm
moveq #1,d5 ;8bit mode
tst.b fami_mode
beq.b .no_imm
moveq #2,d5 ;16bit mode
.no_imm
lea.l 1(a4),a1
bra.b .go_dbf
.sup move.b d4,(a1)+
lsr.l #8,d4
.go_dbf dbf d5,.sup
.do_instr moveq #0,d0
move.b 1(a3,d1.w),d0 ;read instr. len
cmp.b #7,d0
bne.b .ok
moveq #2,d0
tst.b fami_mode
beq.b .ok
moveq #3,d0
bra.b .ok
.end_seek cmp.w #17,d1
bne.b .no_17
moveq #19,d1
bra.w .end_line
.no_17 cmp.w #0,d1
bne.b .no_00
moveq #16,d1
bra.w .end_line
.no_00
.error lea.l AFerror_txt,a0
bsr print
moveq #0,d0
.ok movem.l (a7)+,d1-d7/a1-a4
rts
.too_long lea.l OutOfRange_txt,a0
bsr print
moveq #0,d0
bra.w .ok
OutOfRange_txt dc.b "Out of range error ...",$a,0
AFerror_txt dc.b "Illegal instruction ...",$a,0
even
;< direct
;! absolu
;> absolu long
; dc.b sup.bytes mode,instr.len
fami_len
dc.b 1,2 ;00 #$zz
dc.b 1,2 ;01 $zz
dc.b 1,2 ;02 $zz,x
dc.b 1,2 ;03 ($zz)
dc.b 1,2 ;04 ($zz,x)
dc.b 1,2 ;05 ($zz),y
dc.b 1,2 ;06 [$zz]
dc.b 1,2 ;07 [$zz],y
dc.b 2,3 ;08 $zzzz
dc.b 2,3 ;09 $zzzz,x
dc.b 2,3 ;10 $zzzz,y
dc.b 3,4 ;11 $zzzzzz
dc.b 3,4 ;12 $zzzzzz,x
dc.b 1,2 ;13 $zz,s
dc.b 1,2 ;14 ($zz,s),y
dc.b 0,1 ;15 A
dc.b 5,7 ;16 #$zz #$zzzz
dc.b 6,2 ;17 pc+2+next byte
dc.b 0,1 ;18 'rien'
dc.b 7,3 ;19 pc+3+next word
dc.b 2,3 ;20 ($zzzz)
dc.b 2,3 ;21 ($zzzz,x)
dc.b 1,2 ;22 $zz,y
;00 #$zz 8BitOnly
;01 $zz
;02 $zz,x
;03 ($zz)
;04 ($zz,x)
;05 ($zz),y
;06 [$zz]
;07 [$zz],y
;08 $zzzz
;09 $zzzz,x
;10 $zzzz,y
;11 $zzzzzz
;12 $zzzzzz,x
;13 $zz,s
;14 ($zz,s),y
;15 a
;16 #$zz #$zzzz
;17 pc+2+next byte
;18 'rien'
;19 pc+3+next word
;20 ($zzzz)
;21 ($zzzz,x)
;22 $zz,y
************************************************************
set_65802 movem.l d0-d3/a0,-(a7)
sf fami_mode
lea.l f02_txt,a0
moveq #63,d0
move.w screen_height,d1
subq.w #1,d1
moveq #5-1,d3
.loop move.b (a0)+,d2
bsr print_char2
addq.w #1,d0
dbf d3,.loop
movem.l (a7)+,d0-d3/a0
rts
set_65816 movem.l d0-d3/a0,-(a7)
st fami_mode
lea.l f16_txt,a0
moveq #63,d0
move.w screen_height,d1
subq.w #1,d1
moveq #5-1,d3
.loop move.b (a0)+,d2
bsr print_char2
addq.w #1,d0
dbf d3,.loop
movem.l (a7)+,d0-d3/a0
rts
f02_txt dc.b "65802"
f16_txt dc.b "65816"
even
************************************************************
;65816 / 65802 disassembler
;a4=memory ptr (corrected)
;a0=ascII destination
;returns instr. len in d0
f_disassemble movem.l d1-d7/a1-a3,-(a7)
move.l #' ',d0
move.l d0,(a0)
move.l d0,4(a0)
moveq #1,d7 ;len of instruction
move.b (a4),d0
lea.l fami_list,a3
.seek tst.b 1(a3)
bne.b .err
cmp.b (a3),d0
beq.b .found
addq.l #8,a3
bra.b .seek
.found
bsr do_famid
bra.b .ok
.err move.l #'??? ',(a0)+
moveq #1,d0
.ok move.b #$a,(a0)+
clr.b (a0)+
move.l d7,d0
movem.l (a7)+,d1-d7/a1-a3
rts
do_famid lea.l 2(a3),a1
move.b (a1)+,(a0)+ ;copy instr. name
move.b (a1)+,(a0)+
move.b (a1)+,(a0)+
move.b #' ',(a0)+
move.w 6(a3),d0
and.w #$ff,d0
lsl.w #2,d0
jsr .fmode(pc,d0.w)
;bit 15 a,x,y:8bit
;bit 14 a,x,y:16bit
move.w 6(a3),d0
btst #15,d0
beq.b .no_spec1
move.b 1(a4),d0
and.b #$20,d0
beq.b .no_spec1
lea.l .axy8,a1
.copy1 move.b (a1)+,(a0)+
bne.b .copy1
subq.l #1,a0
tst.b fami_auto
bne.b .no_set
bsr set_65802
.no_set rts
.no_spec1 btst #14,d0
beq.b .no_spec2
move.b 1(a4),d0
and.b #$20,d0
beq.b .no_spec2
lea.l .axy16,a1
.copy2 move.b (a1)+,(a0)+
bne.b .copy2
subq.l #1,a0
tst.b fami_auto
bne.b .no_spec2
bsr set_65816
.no_spec2 rts
OPT_OFF
.fmode bra.w fmode00
bra.w fmode01
bra.w fmode02
bra.w fmode03
bra.w fmode04
bra.w fmode05
bra.w fmode06
bra.w fmode07
bra.w fmode08
bra.w fmode09
bra.w fmode10
bra.w fmode11
bra.w fmode12
bra.w fmode13
bra.w fmode14
bra.w fmode15
bra.w fmode16
bra.w fmode17
bra.w fmode18
bra.w fmode19
bra.w fmode20
bra.w fmode21
bra.w fmode22
OPT_ON
.axy8 dc.b " A,X,Y:8bit",0
.axy16 dc.b " A,X,Y:16bit",0
cnop 0,4
;00 #$zz
fmode00 move.b #'#',(a0)+
;01 $zz
fmode01
move.b #'$',(a0)+
move.b 1(a4),d0
addq.l #1,d7
moveq #2,d1
bsr conv_hex
add.l d1,a0
rts
;02 $zz,x
fmode02 move.b #'$',(a0)+
move.b 1(a4),d0
addq.l #1,d7
moveq #2,d1
bsr conv_hex
add.l d1,a0
move.b #',',(a0)+
move.b #'X',(a0)+
rts
;03 ($zz)
fmode03 move.b #'(',(a0)+
move.b #'$',(a0)+
move.b 1(a4),d0
addq.l #1,d7
moveq #2,d1
bsr conv_hex
add.l d1,a0
move.b #')',(a0)+
rts
;04 ($zz,x)
fmode04 move.b #'(',(a0)+
move.b #'$',(a0)+
move.b 1(a4),d0
addq.l #1,d7
moveq #2,d1
bsr conv_hex
add.l d1,a0
move.b #',',(a0)+
move.b #'X',(a0)+
move.b #')',(a0)+
rts
;05 ($zz),y
fmode05 move.b #'(',(a0)+
move.b #'$',(a0)+
move.b 1(a4),d0
addq.l #1,d7
moveq #2,d1
bsr conv_hex
add.l d1,a0
move.b #')',(a0)+
move.b #',',(a0)+
move.b #'Y',(a0)+
rts
;06 [$zz]
fmode06 move.b #'[',(a0)+
move.b #'$',(a0)+
move.b 1(a4),d0
addq.l #1,d7
moveq #2,d1
bsr conv_hex
add.l d1,a0
move.b #']',(a0)+
rts
;07 [$zz],y
fmode07 move.b #'[',(a0)+
move.b #'$',(a0)+
move.b 1(a4),d0
addq.l #1,d7
moveq #2,d1
bsr conv_hex
add.l d1,a0
move.b #']',(a0)+
move.b #',',(a0)+
move.b #'Y',(a0)+
rts
;08 $zzzz
fmode08 move.b #'$',(a0)+
move.b 2(a4),d0
lsl.w #8,d0
move.b 1(a4),d0
addq.l #2,d7
moveq #4,d1
bsr conv_hex
add.l d1,a0
rts
;09 $zzzz,x
fmode09 move.b #'$',(a0)+
move.b 2(a4),d0
lsl.w #8,d0
move.b 1(a4),d0
addq.l #2,d7
moveq #4,d1
bsr conv_hex
add.l d1,a0
move.b #',',(a0)+
move.b #'X',(a0)+
rts
;10 $zzzz,y
fmode10 move.b #'$',(a0)+
move.b 2(a4),d0
lsl.w #8,d0
move.b 1(a4),d0
addq.l #2,d7
moveq #4,d1
bsr conv_hex
add.l d1,a0
move.b #',',(a0)+
move.b #'Y',(a0)+
rts
;11 $zzzzzz
fmode11 move.b #'$',(a0)+
move.b 3(a4),d0
lsl.l #8,d0
move.b 2(a4),d0
lsl.l #8,d0
move.b 1(a4),d0
addq.l #3,d7
moveq #6,d1
bsr conv_hex
add.l d1,a0
rts
;12 $zzzzzz,x
fmode12 move.b #'$',(a0)+
move.b 3(a4),d0
lsl.l #8,d0
move.b 2(a4),d0
lsl.l #8,d0
move.b 1(a4),d0
addq.l #3,d7
moveq #6,d1
bsr conv_hex
add.l d1,a0
move.b #',',(a0)+
move.b #'X',(a0)+
rts
;13 $zz,s
fmode13
move.b #'$',(a0)+
move.b 1(a4),d0
addq.l #1,d7
moveq #2,d1
bsr conv_hex
add.l d1,a0
move.b #',',(a0)+
move.b #'S',(a0)+
rts
;14 ($zz,s),y
fmode14 move.b #'(',(a0)+
move.b #'$',(a0)+
move.b 1(a4),d0
addq.l #1,d7
moveq #2,d1
bsr conv_hex
add.l d1,a0
move.b #',',(a0)+
move.b #'S',(a0)+
move.b #')',(a0)+
move.b #',',(a0)+
move.b #'Y',(a0)+
rts
;15 a
fmode15 move.b #'A',(a0)+
rts
;23 #$zz #$zzzz
fmode16 move.b #'#',(a0)+
move.b #'$',(a0)+
tst.b fami_mode
bne.b .do_16
move.b 1(a4),d0
addq.l #1,d7
moveq #2,d1
bsr conv_hex
add.l d1,a0
rts
.do_16 move.b 2(a4),d0
lsl.w #8,d0
move.b 1(a4),d0
addq.l #2,d7
moveq #4,d1
bsr conv_hex
add.l d1,a0
rts
;17 pc+2+next byte
fmode17 move.l a4,d0
addq.l #2,d0
move.b 1(a4),d1
addq.l #1,d7
ext.w d1
ext.l d1
add.l d1,d0
moveq #6,d1
bsr conv_hex
add.l d1,a0
rts
;18 'rien'
fmode18 rts
;19 pc+3+next word
fmode19 move.l a4,d0
addq.l #3,d0
move.b 2(a4),d1
lsl.w #8,d1
move.b 1(a4),d1
addq.l #2,d7
ext.l d1
add.l d1,d0
moveq #6,d1
bsr conv_hex
add.l d1,a0
rts
;20 ($zzzz)
fmode20 move.b #'(',(a0)+
move.b #'$',(a0)+
move.b 2(a4),d0
lsl.w #8,d0
move.b 1(a4),d0
addq.l #2,d7
moveq #4,d1
bsr conv_hex
add.l d1,a0
move.b #')',(a0)+
rts
;21 ($zzzz,x)
fmode21 move.b #'(',(a0)+
move.b #'$',(a0)+
move.b 2(a4),d0
lsl.w #8,d0
move.b 1(a4),d0
addq.l #2,d7
moveq #4,d1
bsr conv_hex
add.l d1,a0
move.b #',',(a0)+
move.b #'X',(a0)+
move.b #')',(a0)+
rts
;22 $zz,y
fmode22 move.b #'$',(a0)+
move.b 1(a4),d0
addq.l #1,d7
moveq #2,d1
bsr conv_hex
add.l d1,a0
move.b #',',(a0)+
move.b #'Y',(a0)+
rts
fami_list dc.b $e2,0 ;byte of instruction,0
dc.b 'SEP',0 ;ascII of instruction
dc.w 0+$8000 ;addr. mode
dc.b $69,0
dc.b 'ADC',0
dc.w 16
dc.b $65,0
dc.b 'ADC',0
dc.w 01
dc.b $75,0
dc.b 'ADC',0
dc.w 02
dc.b $72,0
dc.b 'ADC',0
dc.w 03
dc.b $61,0
dc.b 'ADC',0
dc.w 04
dc.b $71,0
dc.b 'ADC',0
dc.w 05
dc.b $67,0
dc.b 'ADC',0
dc.w 06
dc.b $77,0
dc.b 'ADC',0
dc.w 07
dc.b $6D,0
dc.b 'ADC',0
dc.w 08
dc.b $7D,0
dc.b 'ADC',0
dc.w 09
dc.b $79,0
dc.b 'ADC',0
dc.w 10
dc.b $6F,0
dc.b 'ADC',0
dc.w 11
dc.b $7F,0
dc.b 'ADC',0
dc.w 12
dc.b $63,0
dc.b 'ADC',0
dc.w 13
dc.b $73,0
dc.b 'ADC',0
dc.w 14
dc.b $29,0
dc.b 'AND',0
dc.w 16
dc.b $25,0
dc.b 'AND',0
dc.w 01
dc.b $35,0
dc.b 'AND',0
dc.w 02
dc.b $32,0
dc.b 'AND',0
dc.w 03
dc.b $21,0
dc.b 'AND',0
dc.w 04
dc.b $31,0
dc.b 'AND',0
dc.w 05
dc.b $27,0
dc.b 'AND',0
dc.w 06
dc.b $37,0
dc.b 'AND',0
dc.w 07
dc.b $2D,0
dc.b 'AND',0
dc.w 08
dc.b $3D,0
dc.b 'AND',0
dc.w 09
dc.b $39,0
dc.b 'AND',0
dc.w 10
dc.b $2F,0
dc.b 'AND',0
dc.w 11
dc.b $3F,0
dc.b 'AND',0
dc.w 12
dc.b $23,0
dc.b 'AND',0
dc.w 13
dc.b $33,0
dc.b 'AND',0
dc.w 14
dc.b $0A,0
dc.b 'ASL',0
dc.w 15
dc.b $06,0
dc.b 'ASL',0
dc.w 01
dc.b $16,0
dc.b 'ASL',0
dc.w 02
dc.b $0E,0
dc.b 'ASL',0
dc.w 08
dc.b $1E,0
dc.b 'ASL',0
dc.w 09
dc.b $89,0
dc.b 'BIT',0
dc.w 16
dc.b $24,0
dc.b 'BIT',0
dc.w 01
dc.b $34,0
dc.b 'BIT',0
dc.w 02
dc.b $2C,0
dc.b 'BIT',0
dc.w 08
dc.b $3C,0
dc.b 'BIT',0
dc.w 09
dc.b $C9,0
dc.b 'CMP',0
dc.w 16
dc.b $C5,0
dc.b 'CMP',0
dc.w 01
dc.b $D5,0
dc.b 'CMP',0
dc.w 02
dc.b $D2,0
dc.b 'CMP',0
dc.w 03
dc.b $C1,0
dc.b 'CMP',0
dc.w 04
dc.b $D1,0
dc.b 'CMP',0
dc.w 05
dc.b $C7,0
dc.b 'CMP',0
dc.w 06
dc.b $D7,0
dc.b 'CMP',0
dc.w 07
dc.b $CD,0
dc.b 'CMP',0
dc.w 08
dc.b $DD,0
dc.b 'CMP',0
dc.w 09
dc.b $D9,0
dc.b 'CMP',0
dc.w 10
dc.b $CF,0
dc.b 'CMP',0
dc.w 11
dc.b $DF,0
dc.b 'CMP',0
dc.w 12
dc.b $C3,0
dc.b 'CMP',0
dc.w 13
dc.b $D3,0
dc.b 'CMP',0
dc.w 14
dc.b $E0,0
dc.b 'CPX',0
dc.w 16
dc.b $E4,0
dc.b 'CPX',0
dc.w 01
dc.b $EC,0
dc.b 'CPX',0
dc.w 08
dc.b $C0,0
dc.b 'CPY',0
dc.w 16
dc.b $C4,0
dc.b 'CPY',0
dc.w 01
dc.b $CC,0
dc.b 'CPY',0
dc.w 08
dc.b $3A,0
dc.b 'DEC',0
dc.w 15
dc.b $C6,0
dc.b 'DEC',0
dc.w 01
dc.b $D6,0
dc.b 'DEC',0
dc.w 02
dc.b $CE,0
dc.b 'DEC',0
dc.w 08
dc.b $DE,0
dc.b 'DEC',0
dc.w 09
dc.b $49,0
dc.b 'EOR',0
dc.w 16
dc.b $45,0
dc.b 'EOR',0
dc.w 01
dc.b $55,0
dc.b 'EOR',0
dc.w 02
dc.b $52,0
dc.b 'EOR',0
dc.w 03
dc.b $41,0
dc.b 'EOR',0
dc.w 04
dc.b $51,0
dc.b 'EOR',0
dc.w 05
dc.b $47,0
dc.b 'EOR',0
dc.w 06
dc.b $57,0
dc.b 'EOR',0
dc.w 07
dc.b $4D,0
dc.b 'EOR',0
dc.w 08
dc.b $5D,0
dc.b 'EOR',0
dc.w 09
dc.b $59,0
dc.b 'EOR',0
dc.w 10
dc.b $4F,0
dc.b 'EOR',0
dc.w 11
dc.b $5F,0
dc.b 'EOR',0
dc.w 12
dc.b $43,0
dc.b 'EOR',0
dc.w 13
dc.b $53,0
dc.b 'EOR',0
dc.w 14
dc.b $1A,0
dc.b 'INC',0
dc.w 15
dc.b $E6,0
dc.b 'INC',0
dc.w 01
dc.b $F6,0
dc.b 'INC',0
dc.w 02
dc.b $EE,0
dc.b 'INC',0
dc.w 08
dc.b $FE,0
dc.b 'INC',0
dc.w 09
dc.b $A9,0
dc.b 'LDA',0
dc.w 16
dc.b $A5,0
dc.b 'LDA',0
dc.w 01
dc.b $B5,0
dc.b 'LDA',0
dc.w 02
dc.b $B2,0
dc.b 'LDA',0
dc.w 03
dc.b $A1,0
dc.b 'LDA',0
dc.w 04
dc.b $B1,0
dc.b 'LDA',0
dc.w 05
dc.b $A7,0
dc.b 'LDA',0
dc.w 06
dc.b $B7,0
dc.b 'LDA',0
dc.w 07
dc.b $AD,0
dc.b 'LDA',0
dc.w 08
dc.b $BD,0
dc.b 'LDA',0
dc.w 09
dc.b $B9,0
dc.b 'LDA',0
dc.w 10
dc.b $AF,0
dc.b 'LDA',0
dc.w 11
dc.b $BF,0
dc.b 'LDA',0
dc.w 12
dc.b $A3,0
dc.b 'LDA',0
dc.w 13
dc.b $B3,0
dc.b 'LDA',0
dc.w 14
dc.b $A2,0
dc.b 'LDX',0
dc.w 16
dc.b $A6,0
dc.b 'LDX',0
dc.w 01
dc.b $B6,0
dc.b 'LDX',0
dc.w 22
dc.b $AE,0
dc.b 'LDX',0
dc.w 08
dc.b $BE,0
dc.b 'LDX',0
dc.w 10
dc.b $A0,0
dc.b 'LDY',0
dc.w 16
dc.b $A4,0
dc.b 'LDY',0
dc.w 01
dc.b $B4,0
dc.b 'LDY',0
dc.w 02
dc.b $AC,0
dc.b 'LDY',0
dc.w 08
dc.b $BC,0
dc.b 'LDY',0
dc.w 09
dc.b $46,0
dc.b 'LSR',0
dc.w 01
dc.b $56,0
dc.b 'LSR',0
dc.w 02
dc.b $4E,0
dc.b 'LSR',0
dc.w 08
dc.b $5E,0
dc.b 'LSR',0
dc.w 09
dc.b $4A,0
dc.b 'LSR',0
dc.w 15
dc.b $09,0
dc.b 'ORA',0
dc.w 16
dc.b $05,0
dc.b 'ORA',0
dc.w 01
dc.b $15,0
dc.b 'ORA',0
dc.w 02
dc.b $12,0
dc.b 'ORA',0
dc.w 03
dc.b $01,0
dc.b 'ORA',0
dc.w 04
dc.b $11,0
dc.b 'ORA',0
dc.w 05
dc.b $07,0
dc.b 'ORA',0
dc.w 06
dc.b $17,0
dc.b 'ORA',0
dc.w 07
dc.b $0D,0
dc.b 'ORA',0
dc.w 08
dc.b $1D,0
dc.b 'ORA',0
dc.w 09
dc.b $19,0
dc.b 'ORA',0
dc.w 10
dc.b $0F,0
dc.b 'ORA',0
dc.w 11
dc.b $1F,0
dc.b 'ORA',0
dc.w 12
dc.b $03,0
dc.b 'ORA',0
dc.w 13
dc.b $13,0
dc.b 'ORA',0
dc.w 14
dc.b $2A,0
dc.b 'ROL',0
dc.w 15
dc.b $26,0
dc.b 'ROL',0
dc.w 01
dc.b $36,0
dc.b 'ROL',0
dc.w 02
dc.b $2E,0
dc.b 'ROL',0
dc.w 08
dc.b $3E,0
dc.b 'ROL',0
dc.w 09
dc.b $6A,0
dc.b 'ROR',0
dc.w 15
dc.b $66,0
dc.b 'ROR',0
dc.w 01
dc.b $76,0
dc.b 'ROR',0
dc.w 02
dc.b $6E,0
dc.b 'ROR',0
dc.w 08
dc.b $7E,0
dc.b 'ROR',0
dc.w 09
dc.b $E9,0
dc.b 'SBC',0
dc.w 16
dc.b $E5,0
dc.b 'SBC',0
dc.w 01
dc.b $F5,0
dc.b 'SBC',0
dc.w 02
dc.b $F2,0
dc.b 'SBC',0
dc.w 03
dc.b $E1,0
dc.b 'SBC',0
dc.w 04
dc.b $F1,0
dc.b 'SBC',0
dc.w 05
dc.b $E7,0
dc.b 'SBC',0
dc.w 06
dc.b $F7,0
dc.b 'SBC',0
dc.w 07
dc.b $ED,0
dc.b 'SBC',0
dc.w 08
dc.b $FD,0
dc.b 'SBC',0
dc.w 09
dc.b $F9,0
dc.b 'SBC',0
dc.w 10
dc.b $EF,0
dc.b 'SBC',0
dc.w 11
dc.b $FF,0
dc.b 'SBC',0
dc.w 12
dc.b $E3,0
dc.b 'SBC',0
dc.w 13
dc.b $F3,0
dc.b 'SBC',0
dc.w 14
dc.b $85,0
dc.b 'STA',0
dc.w 01
dc.b $95,0
dc.b 'STA',0
dc.w 02
dc.b $92,0
dc.b 'STA',0
dc.w 03
dc.b $81,0
dc.b 'STA',0
dc.w 04
dc.b $91,0
dc.b 'STA',0
dc.w 05
dc.b $87,0
dc.b 'STA',0
dc.w 06
dc.b $97,0
dc.b 'STA',0
dc.w 07
dc.b $8D,0
dc.b 'STA',0
dc.w 08
dc.b $9D,0
dc.b 'STA',0
dc.w 09
dc.b $99,0
dc.b 'STA',0
dc.w 10
dc.b $8F,0
dc.b 'STA',0
dc.w 11
dc.b $9F,0
dc.b 'STA',0
dc.w 12
dc.b $83,0
dc.b 'STA',0
dc.w 13
dc.b $93,0
dc.b 'STA',0
dc.w 14
dc.b $86,0
dc.b 'STX',0
dc.w 01
dc.b $96,0
dc.b 'STX',0
dc.w 22
dc.b $8E,0
dc.b 'STX',0
dc.w 08
dc.b $84,0
dc.b 'STY',0
dc.w 01
dc.b $94,0
dc.b 'STY',0
dc.w 02
dc.b $8C,0
dc.b 'STY',0
dc.w 08
dc.b $64,0
dc.b 'STZ',0
dc.w 01
dc.b $74,0
dc.b 'STZ',0
dc.w 02
dc.b $9C,0
dc.b 'STZ',0
dc.w 08
dc.b $9E,0
dc.b 'STZ',0
dc.w 09
dc.b $14,0
dc.b 'TRB',0
dc.w 01
dc.b $1C,0
dc.b 'TRB',0
dc.w 08
dc.b $04,0
dc.b 'TSB',0
dc.w 01
dc.b $0C,0
dc.b 'TSB',0
dc.w 08
dc.b $C2,0
dc.b 'REP',0
dc.w 00+$4000
dc.b $E2,0
dc.b 'SEP',0
dc.w 0+$8000
dc.b $90,0
dc.b 'BCC',0
dc.w 17
dc.b $B0,0
dc.b 'BCS',0
dc.w 17
dc.b $F0,0
dc.b 'BEQ',0
dc.w 17
dc.b $30,0
dc.b 'BMI',0
dc.w 17
dc.b $D0,0
dc.b 'BNE',0
dc.w 17
dc.b $10,0
dc.b 'BPL',0
dc.w 17
dc.b $80,0
dc.b 'BRA',0
dc.w 17
dc.b $50,0
dc.b 'BVC',0
dc.w 17
dc.b $70,0
dc.b 'BVS',0
dc.w 17
dc.b $18,0
dc.b 'CLC',0
dc.w 18
dc.b $D8,0
dc.b 'CLD',0
dc.w 18
dc.b $58,0
dc.b 'CLI',0
dc.w 18
dc.b $B8,0
dc.b 'CLV',0
dc.w 18
dc.b $CA,0
dc.b 'DEX',0
dc.w 18
dc.b $88,0
dc.b 'DEY',0
dc.w 18
dc.b $E8,0
dc.b 'INX',0
dc.w 18
dc.b $C8,0
dc.b 'INY',0
dc.w 18
dc.b $EA,0
dc.b 'NOP',0
dc.w 18
dc.b $F4,0
dc.b 'PEA',0
dc.w 08
dc.b $D4,0
dc.b 'PEI',0
dc.w 03
dc.b $62,0
dc.b 'PER',0
dc.w 19
dc.b $48,0
dc.b 'PHA',0
dc.w 18
dc.b $8B,0
dc.b 'PHB',0
dc.w 18
dc.b $0B,0
dc.b 'PHD',0
dc.w 18
dc.b $4B,0
dc.b 'PHK',0
dc.w 18
dc.b $08,0
dc.b 'PHP',0
dc.w 18
dc.b $DA,0
dc.b 'PHX',0
dc.w 18
dc.b $5A,0
dc.b 'PHY',0
dc.w 18
dc.b $68,0
dc.b 'PLA',0
dc.w 18
dc.b $AB,0
dc.b 'PLB',0
dc.w 18
dc.b $2B,0
dc.b 'PLD',0
dc.w 18
dc.b $28,0
dc.b 'PLP',0
dc.w 18
dc.b $FA,0
dc.b 'PLX',0
dc.w 18
dc.b $7A,0
dc.b 'PLY',0
dc.w 18
dc.b $38,0
dc.b 'SEC',0
dc.w 18
dc.b $F8,0
dc.b 'SED',0
dc.w 18
dc.b $78,0
dc.b 'SEI',0
dc.w 18
dc.b $AA,0
dc.b 'TAX',0
dc.w 18
dc.b $A8,0
dc.b 'TAY',0
dc.w 18
dc.b $5B,0
dc.b 'TCD',0
dc.w 18
dc.b $1B,0
dc.b 'TCS',0
dc.w 18
dc.b $7B,0
dc.b 'TDC',0
dc.w 18
dc.b $1C,0
dc.b 'TRB',0
dc.w 08
dc.b $14,0
dc.b 'TRB',0
dc.w 01
dc.b $0C,0
dc.b 'TSB',0
dc.w 08
dc.b $04,0
dc.b 'TSB',0
dc.w 01
dc.b $3B,0
dc.b 'TSC',0
dc.w 18
dc.b $BA,0
dc.b 'TSX',0
dc.w 18
dc.b $8A,0
dc.b 'TXA',0
dc.w 18
dc.b $9A,0
dc.b 'TXS',0
dc.w 18
dc.b $9B,0
dc.b 'TXY',0
dc.w 18
dc.b $98,0
dc.b 'TYA',0
dc.w 18
dc.b $BB,0
dc.b 'TYX',0
dc.w 18
dc.b $FB,0
dc.b 'XCE',0
dc.w 18
dc.b $00,0
dc.b 'BRK',0
dc.w 00
dc.b $82,0
dc.b 'BRL',0
dc.w 19
dc.b $02,0
dc.b 'COP',0
dc.w 00
dc.b $DC,0
dc.b 'JML',0
dc.w 20
dc.b $4C,0
dc.b 'JMP',0
dc.w 08
dc.b $6C,0
dc.b 'JMP',0
dc.w 20
dc.b $7C,0
dc.b 'JMP',0
dc.w 21
dc.b $5C,0
dc.b 'JMP',0
dc.w 11
dc.b $22,0
dc.b 'JSL',0
dc.w 11
dc.b $20,0
dc.b 'JSR',0
dc.w 08
dc.b $FC,0
dc.b 'JSR',0
dc.w 21
dc.b $54,0
dc.b 'MVN',0
dc.w 08
dc.b $44,0
dc.b 'MVP',0
dc.w 08
dc.b $C2,0
dc.b 'REP',0
dc.w 00+$4000
dc.b $40,0
dc.b 'RTI',0
dc.w 18
dc.b $6B,0
dc.b 'RTL',0
dc.w 18
dc.b $60,0
dc.b 'RTS',0
dc.w 18
dc.b $E2,0
dc.b 'SEP',0
dc.w 00+$8000
dc.b $DB,0
dc.b 'STP',0
dc.w 18
dc.b $CB,0
dc.b 'WAI',0
dc.w 18
dc.b $EB,0
dc.b 'XBA',0
dc.w 18
dc.w -1
;00 #$zz
;01 $zz
;02 $zz,x
;03 ($zz)
;04 ($zz,x)
;05 ($zz),y
;06 [$zz]
;07 [$zz],y
;08 $zzzz
;09 $zzzz,x
;10 $zzzz,y
;11 $zzzzzz
;12 $zzzzzz,x
;13 $zz,s
;14 ($zz,s),y
;15 a
;16 #$zz #$zzzz
;17 pc+2+next byte
;18 'rien'
;19 pc+3+next word
;20 ($zzzz)
;21 ($zzzz,x)
;22 $zz,y
;bit 15 a,x,y:8bit
;bit 14 a,x,y:16bit